#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "slide.h"

int main()
{
  int n,i,j,k,l,h,m;//k,h,l,m为标记变量。
  scanf("%d",&n);
  char **A=malloc(n*sizeof(char *));//幻灯片和数字的nn方阵
  float *Sx1=malloc(n*sizeof(float));
  float *Sx2=malloc(n*sizeof(float));
  float *Sy1=malloc(n*sizeof(float));
  float *Sy2=malloc(n*sizeof(float));//幻灯片坐标
  float *Px=malloc(n*sizeof(float));
  float *Py=malloc(n*sizeof(float));//数字的坐标
  int *Pn=malloc(n*sizeof(int));//P点的号码
  int *S=malloc(n*sizeof(int));
  int *P=malloc(n*sizeof(int));  
  
  for(i=0;i<n;i++)
  {
    scanf("%f %f %f %f",&Sx1[i],&Sy1[i],&Sx2[i],&Sy2[i]); 
    A[i]=malloc(n);
    S[i]=-1;
    P[i]=-1;
    Pn[i]=i;
  }//幻灯片的输入
  
  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      A[i][j]=' ';
    
  for(i=0;i<n;i++)
    scanf("%f %f",&Px[i],&Py[i]);
   //数字的输入      
   
  Qsort(Px,Py,Pn,0,n-1);//对P点按照x的大小进行排序
  for(i=0;i<n;i++)
    Select(Px,Py,Pn,Sx1[i],Sy1[i],Sx2[i],Sy2[i],i,A,n);
  //前期的预处理，对p进行排序，然后把幻灯片和p进行对照。
  h=-1;
  m=-1;
  while(h!=0&&m!=0)
  {
    h=0;
    m=0;
    for(i=0;i<n;i++)
    {
      if(P[i]==-1)
      {
        k=0;
        h++;
        for(j=0;j<n;j++)
        {
          if(S[j]==-1&&A[i][j]=='1')
          {     
            k++;
            l=j;
            
          }
        }
        if(k==1)
        {
          S[l]=i;//第l张幻灯片与i对应。
          P[i]=l;
          m++;
        }
      }
    }
  }
  
  if(h==0)
  {
    for(i=0;i<n;i++)
      printf("%d %d\n",i+1,P[i]+1);
  }
  else
    printf("-1\n");
}
